/**
 * 
 */
package com.vil.common;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.InputStream;
import java.util.Properties;

/**
 * @author YYS
 *@Date 2020年10月10日
 */
public abstract class JedisUtils {
	
	   private static  JedisPool jp=null;
	   private static  Integer maxidle=null;
	   private static  Integer minidle=null;
	   private static  Integer maxtotal=null;
	   private static  Integer maxWaitMillis=null;
	   private static  boolean testOnBorrow=false;
	   private static  String host=null;
	   private static  Integer port=null;   
		   
	   static{
		   InputStream is = JedisUtils.class.getClassLoader().getResourceAsStream("redis.properties");
		   Properties pp=new Properties();
		   try {
			   pp.load(is); //加载配置文件
		   } catch (Exception e) {
			 e.printStackTrace();
		   }
		   maxidle=Integer.parseInt(pp.getProperty("redis.maxidle"));
		   minidle=Integer.parseInt(pp.getProperty("redis.minidle"));
		   maxtotal=Integer.parseInt(pp.getProperty("redis.maxtotal"));
		   maxWaitMillis=Integer.parseInt(pp.getProperty("redis.maxWaitMillis"));
		   testOnBorrow=Boolean.parseBoolean(pp.getProperty("redis.maxtotal"));
		   host=pp.getProperty("redis.host");
		   port=Integer.parseInt(pp.getProperty("redis.port"));
		   
		   JedisPoolConfig jpc=new JedisPoolConfig();
			jpc.setMaxIdle(maxidle); //最大空闲数
			jpc.setMinIdle(minidle); //最小空闲数
			jpc.setMaxTotal(maxtotal); //最大连接数
			jpc.setMaxWaitMillis(maxWaitMillis); //建立连接最大等待时间
			jpc.setTestOnBorrow(testOnBorrow);//返回连接时，检测连接是否成功
			jp=new JedisPool(jpc,host,port);  //创建连接池对象
	   }	
	   
		//获得Jedis对象
		public static Jedis getJedis(){
			return jp.getResource();
		}	
		

		public static void closeJedis(Jedis jd){
			if(jd!=null){
				jd.close(); //关闭资源
		   }	
	   }
		
		/**
		 * 设置key value
		 * <p>Description: </p>
		 */
		public static boolean set(String key,String value){
			try {
				Jedis jd=JedisUtils.getJedis();
				jd.set(key, value);
				return true;
			} catch (Exception e) {
				e.printStackTrace();
			}
			return false;
		}
		
		
		/**
		 * 根据key获得值
		 */
		public static String get(String key){
			Jedis jd=null;
			try {
				jd=JedisUtils.getJedis();
				return jd.get(key);
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				closeJedis(jd);
			}
			return null;
		}
		
		/**
		 * 判断某个key是否存在
		 */
		public static boolean exist(String key){
			try {
				Jedis jd=JedisUtils.getJedis();
				return jd.exists(key);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return false;
		}
}
